"""
Conclusion:
    工厂模式（Factory Pattern）：用于根据客户端需求动态创建对象。
    简单工厂模式——最基本的工厂模式，工厂方法模式——工厂进行抽象化进一步改进，抽象工厂模式——更强调不同产品之间的关联性和组合。

优点：
    简化对象创建。
    可以动态生成对象。提高系统灵活性和可扩展性。
    提高代码复用性，降低耦合度。
缺点：
    增加系统复杂度和代码量，需定义多个工厂类以及产品类

Definition：简单工厂模式（Simple Factory Pattern）：简单工厂模式是一种基本的工厂模式，通常由一个工厂类根据传入的参数动态决定创建哪种产品类的实例。
            （简单而言：一个工厂类根据传入参数创建哪个类实例）
Scene: 适用于对象较少且产品等级结构稳定的情况。

Characters: 工厂角色（Factory） 抽象产品角色（Product） 具体产品角色（Concrete Product）

Code: ：Product 是产品类的抽象基类，定义了一个 use() 方法作为产品类的通用接口。
       ConcreteProductA 和 ConcreteProductB 是具体的产品类，实现了 Product 类的 use() 方法。
       Factory 是工厂类，负责根据客户端的需求动态创建不同的产品类实例。
"""


class Product:
    def use(self):
        pass


class ConcreteProductA(Product):
    def use(self):
        print("Using product A.")


class ConcreteProductB(Product):
    def use(self):
        print("Using product B.")


class Factory:
    @staticmethod
    def create_product(product_type):
        if product_type == "A":
            return ConcreteProductA()
        elif product_type == "B":
            return ConcreteProductB()


product_a = Factory.create_product("A")
product_a.use()   # 输出：Using product A.

product_b = Factory.create_product("B")
product_b.use()   # 输出：Using product B.
